1. Field of the Invention
The present invention relates generally to data integrity. More specifically, the invention relates to a computer implemented method, apparatus, and computer usable program code for preventing the copying of secured code or the rewriting of secured code.
2. Description of the Related Art
Increasingly large symmetric multi-processor data processing systems, such as IBM eServer™ P690, available from International Business Machines Corporation, DHP9000 Superdome Enterprise Server, available from Hewlett-Packard Company, and the Sunfire™ 15K server, available from Sun Microsystems, Inc., are not being used as single large data processing systems. The data processing systems are the trademarked names of the respective companies. Often, operators partition this type of a data processing system to form a number of logical systems. These logical systems are known as logical partitioned (LPAR) data processing systems. Many data processing systems allow multiple copies of a single operating system or multiple heterogeneous operating systems to be run simultaneously on a single data processing system platform when used with a logical partitioning functionality. A partition manager allocates a non-overlapping subset of the platform's resources to a partition, within which an operating system image runs. These platform allocatable resources include one or more architecturally distinct processors with their interrupt management area, regions of system memory, and input/output (I/O) adapter bus slots. The platform's firmware represents the partition's resources to the operating system image.
Each distinct operating system or image of an operating system running within a platform is protected from each other such that software errors on one logical partition cannot affect the correct operations of any of the other partitions. Firmware protects by allocating a disjointed set of platform resources to be directly managed by each operating system image. Firmware also protects by providing mechanisms for insuring that the various images cannot control any resources not allocated to that image. Furthermore, firmware prevents software errors of an operating system from affecting the resources of any other image. Thus, each image of the operating system or each different operating system directly controls a distinct set of allocatable resources within the platform.
With respect to hardware resources in a logical partitioned data processing system, these resources are disjointly shared among various partitions. These resources may include, for example, input/output (I/O) adapters, memory dual in-line memory modules (DIMMs), non-volatile random access memory (NVRAM), and hard disk drives. Each partition within an LPAR data processing system may be booted and shut down over and over without having to power-cycle the entire data processing system. A partition is a subset of data processing system hardware resources allocated to an operating system wherein there is no overlap in resources allocated to two partitions. A partition manager may allocate memory between two partitions from a common memory chip. This allocation results in preventing an overlap of the ranges of physical memory addresses directly accessible to each partition. One partition may indirectly control memory of a second partition, but only by commanding a process of the second partition to directly operate on the memory.
Commercial software developers require protections to copies of software or code they develop. In the first instance, it would be helpful to prevent the unauthorized copying of the software in order to couple the benefits of software with its costs. In the second instance, it would be helpful to diminish external forces that corrupt the code by making unauthorized writes to memory allocated to the software.